package com.qf.service;

import com.qf.dao.CartDao;
import com.qf.dao.CartDaoImpl;
import com.qf.dao.GoodsDao;
import com.qf.dao.GoodsDaoImpl;
import com.qf.pojo.Cart;
import com.qf.pojo.Goods;
import com.sun.org.apache.bcel.internal.generic.NEW;

import java.util.List;

/**
 * @author LiXuekai on 2022/5/25
 */
public class CartServiceImpl implements CartService {
    @Override
    public boolean createCart(Integer uid, Integer pid) {
        //1.根据用户和商品的id 到数据库查询是否已经有这个商品的数据
        CartDao cartDao = new CartDaoImpl();
        Cart cart = cartDao.findCartByUidAndPid(uid, pid);
        //根据商品的id  查询商品对象
        GoodsDao goodsDao = new GoodsDaoImpl();
        Goods goods = goodsDao.findById(pid);
        if (cart != null) {
            //2.判断如果能够查询到这个购物项数据 进行购买数量的添加
            //购买数量+1
            cart.setNum(cart.getNum() + 1);
            //将商品对象放入购物车中
            cart.setGoods(goods);
            //重新计算总价格=商品的单价*商品的数量
            cart.setMoney(cart.getNum() * goods.getPrice());
            //调用dao 将最新的购物车数据更新到列表中
            cartDao.updateCart(cart);
        } else {
            //3 判断如果查不到这个购物项的 数据。那么作为新的购物项提娜佳到数据库中
            //因为cart购物车为null 所有需要new 购物车对象
            cart = new Cart();
            //用户id
            cart.setUid(uid);
            //商品的id
            cart.setPid(pid);
            //购买的数量
            cart.setNum(1);
            //将商品对象放入购物车中
            cart.setGoods(goods);
            //总价=购买数量*商品单价
            cart.setMoney(cart.getNum() * goods.getPrice());
            cartDao.insertCart(cart);
        }
        return true;

    }

    @Override
    public List<Cart> findCartListByUid(Integer uid) {
        //.根据用户id 查询购物的集合
        CartDao cartDao = new CartDaoImpl();
        List<Cart> cartList = cartDao.findCartListByUid(uid);
        //查询所有的商品数据
        GoodsDao goodsDao = new GoodsDaoImpl();
        List<Goods> goodsList = goodsDao.findGoodsAll();
        //.这种做法效率满，因为遍历的次数是cartlist集合的个数 乘以 goodsList的数量
        if (cartList != null) {
            //遍历购物车集合
            for (Cart cart : cartList) {
                //遍历商品合集
                for (Goods goods : goodsList) {
                    if (cart.getPid() == goods.getId()) {
                        //将商品对象 放入购物项对象中
                        cart.setGoods(goods);
                    }
                }
            }
        }
        return cartList;
    }

    @Override
    public void updateCart(Integer cid, Integer num) {
//1.根据cid 带数据库查询这个购物项的数据
        CartDao cartDao = new CartDaoImpl();
        Cart cart = cartDao.findById(cid);
        //2.查询到的购物项的 商品id 到商品表中查询对用的商品数据
        GoodsDao goodsDao = new GoodsDaoImpl();
        Goods goods = goodsDao.findById(cart.getPid());
        //3.重新计算总价=商品单价*商品的数量
        cart.setNum(num);
        cart.setGoods(goods);
        cart.setMoney(goods.getPrice() * num);
        cartDao.updateCart(cart);
    }

    /**
     * 根据用户id删除数据
     *
     * @param id
     */
    @Override
    public void deleteById(Integer id) {
        CartDao cartDao = new CartDaoImpl();
        cartDao.deleteById(id);
    }


}